home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Systemmonitors / ResAnalyzer / Manual next >
Text File  |  1996-09-26  |  13KB  |  346 lines

  1.  
  2.                                ResAnalyzer v2.2
  3.  
  4.                         © 1992 By Silvio Umberto Zanzi
  5.                             Via Agostino Gemelli 9
  6.                            40026 Imola (BO) - Italy
  7.  
  8.                           IDCMP BBS (300-14400 HST)
  9.                    Imola Direct Communication Message Port
  10.                             Tel. +39/(0)542/25983
  11.  
  12.                           FidoNet.........2:332/405
  13.                           AmigaNet.......39:102/300
  14.                           AmigaNet.......39:102/302
  15.                           NeST...........90:8002/0
  16.                           NeST...........90:8002/100
  17.                           NeST...........90:8002/101
  18.  
  19.  
  20.  
  21. /\/\/\/\/\/\/\/\/\/\/\
  22. ....CopyRight Notice  )
  23. \/\/\/\/\/\/\/\/\/\/\/
  24.  
  25. ResAnalyzer is a ShareWare product, it means that you can copy and
  26. redistribute it freely, the only restriction is that you should send me $20 if
  27. you find the program useful.
  28.  
  29. Comments, suggestions and bug reports are welcomed.
  30.  
  31. The author makes no warranties for damages generated by a wrong use of
  32. ResAnalyzer 2.2.
  33.  
  34. /\/\/\/\/\/\/\/\/\/\/\
  35. ........Introduction  )
  36. \/\/\/\/\/\/\/\/\/\/\/
  37.  
  38. ResAnalyzer is a resident modules monitor, its main purpose is to show every
  39. information related to them.
  40.  
  41. Who tried to scan the resident modules subsystem was forced, until now, to
  42. use the incomplete ResModules options in generic monitors like Xoper, Exector,
  43. ARTM, ecc.
  44. With the help of ResAnalyzer it is now possible to obtain a global view of resident
  45. modules subsystem, catching all the necessary info in an easy, schematic and
  46. fast way.
  47.  
  48. ResAnalyzer is a great help to everyone who develops resident modules, as a
  49. matter of fact it is easier to verify if your own Resident module has been
  50. installed and if it has the parameters that you've set.
  51. Users not interested in programming can verify if that strange module is the
  52. new virus unknown to every virus killer or if a program has "silently"
  53. installed Resident modules.
  54.  
  55. /\/\/\/\/\/\/\/\/\/\/\
  56. ........Installation  )
  57. \/\/\/\/\/\/\/\/\/\/\/
  58.  
  59. ResAnalyzer doesn't require special installation procedures, you have only to
  60. click its icon from workbench or type its name from shell.
  61.  
  62. ResAnalyzer under KickStart 1.2/1.3 does not show such a fast text, that's
  63. because the ROM text rendering routines are very slowly.
  64. In order to solve this problem you can use BlitzFonts by Hayes C. Haugen or
  65. FF by Charlie Heath from Microsmiths.
  66. BlitzFonts is in Fish Disks 60 or in any good BBS, FF is in the WorkBench 1.3
  67. disk.
  68. Using KickStart 2.04 those utilities become useless because the rendering
  69. routines are faster than in the older version.
  70.  
  71. ResAnalyzer recognizes if you're using a NTSC system and adapts itself
  72. accordingly, the shell process from wich you launched ResAnalyzer is free, it
  73. doesn't take CPU ticks if you leave it in background and adapts itself to 80
  74. columns if you launch it from a 60 columns environment.
  75.  
  76. ResAnalyzer works well on every Amiga model produced until now (April 1992)
  77. and on every operative system version equal to, or higher than, 1.2.  On
  78. operative system 2.04 ResAnalyzer will work without any problems and will
  79. adapt itself according to the new desktop.
  80.  
  81. I've worked hard to make this program comfortable, efficient and standard, I
  82. hope that ResAnalyzer will be spread worldwide.
  83.  
  84. /\/\/\/\/\/\/\/\/\/\/\
  85. ..............Theory  )
  86. \/\/\/\/\/\/\/\/\/\/\/
  87.  
  88. The programming of Resident modules isn't very easy, the first problem is to
  89. find adeguate information and obtain a global vision.
  90. Unfortunately it isn't easy to find specific articles in tech magazines and
  91. Rom Kernels 1.3 are not a great help (the information is lost in various
  92. places over the two volumes), so the best way of learning this subject is the
  93. direct experimentation.
  94.  
  95. There are mainly two methods to run a custom routine after the reset.
  96.  
  97. 1) Loading a pointer in a Capture
  98. 2) Using a Resident structure
  99.  
  100. The table bellow shows the methods used by some programs.
  101.  
  102.       Name                           Author                      Method
  103.       ------------------------------------------------------------------
  104.       Guardian v1.1                  © Leonardo Fei              2
  105.       Pseudo-Ops Virus Protector     © Pseudo-Ops                2
  106.       Virus Slayer                   © The Band                  1
  107.       Protec III                     © Bowie Softworks           2
  108.       Aspro                          © Dr Debug                  1,2
  109.       Rom Crack                      © SCA                       1
  110.       RAD v1.0                       © Commodore-Amiga           2
  111.       RRAM Disk                      © B. Dayley & Other Guys    2
  112.       Privilege Handler              © John Veldthuis            2
  113.       SCA virus                                                  1
  114.       Byte Bandit virus                                          1
  115.       EDV (BGS9) virus                                           2
  116.       HCS II virus                                               1
  117.       Pentagon Circle virus                                      1
  118.       16 Bit Crew virus                                          1
  119.       BackFlash virus                                            1
  120.       WarHawk virus                                              1
  121.       NorthStar 1 (anti)virus                                    1
  122.       NorthStar 2 (anti)virus                                    1
  123.       Phantasmumble virus                                        1
  124.       Graffiti virus                                             1
  125.       UltraFox virus                                             1
  126.  
  127.  
  128. The two methods are explained below, in the option section.
  129.  
  130. /\/\/\/\/\/\/\/\/\/\/\
  131. .............Options  )
  132. \/\/\/\/\/\/\/\/\/\/\/
  133.  
  134. The ResAnalyzer functions are activable by a mouse click over the relevant
  135. gadgets or pressing the equivalents functions keys between F1 to F6.
  136. Pressing anytime the F10 key you can activate the iconify, to quit you can use
  137. the close gadget or the ESC key.
  138.  
  139. Captures
  140. ========
  141. Captures are three variables in the ExecBase structure, defined as:
  142.  
  143. SysBase->ColdCapture
  144. SysBase->CoolCapture
  145. SysBase->WarmCapture
  146.  
  147. Those variables are scanned, according to the above sequence , in different
  148. Amiga startup moments.
  149. Usually they are set to zero, but an expert user can insert a pointer to a
  150. custom routine.
  151. In this evenience, after the reset, will be executed the user routine first,
  152. once finished , the system will continue the standard startup procedure.
  153. The pointers present in CoolCapture and WarnCapture are kept after various
  154. reset, ColdCapture which is resetd every time.
  155.  
  156. The captures option shows these pointers and allow the user to eventually
  157. reset them.
  158.  
  159. KickMemPtr
  160. ==========
  161. This variable, defined as SysBase->KickMemPtr, contains a pointer to the first
  162. RAM ResModule MemList structure.
  163.  
  164. The MemList structure contains a MemEntry structure, there you can find useful
  165. information about the Resident memory chunk specifics and a pointer to a
  166. Resident structure.
  167. There is also a Node structure with it, so it's possible to know if there are
  168. other linked MemList structures.
  169. The system uses this list to determine which memory blocks must be protected,
  170. so no program will be able to use the memory you alloched for your ResModule.
  171. This list is kept after the reset.
  172.  
  173. The  ResAnalyzer option shows some useful information like the start and final
  174. code location and its lenght.
  175.  
  176.  
  177. KickTagPtr
  178. ==========
  179. This variable, defined as SysBase->KickTagPtr, contains an array chain.
  180.  
  181. Every  time you insert a new module in the system (with a Resident structure),
  182. a new pointer is added to the list pointed by KickTagPtr.
  183. In order to obtain the next chain element, you have to consider the value
  184. pointed by the last pointer, to scan if the bit 31 is set, and in this case
  185. reset it.
  186. The resulting value is the pointer to next element.
  187. This chain tells the system what the modules that an user have installed in
  188. memory are, and it is used for the modules launch after the reset.
  189.  
  190. ResAnalyzer shows every module present in the chain.
  191.  
  192.  
  193. KickChkSum
  194. ==========
  195. This variable, defined as SysBase->KickCheckSum, is needed by the system to
  196. verify if, at the reset, all module codes are safe.
  197. This control consists of a resident structure and code checksum with a
  198. comparation of the value present in SysBase->KickCheckSum.
  199. If the values are different, the system ignores the installed modules, this
  200. because the modules would be corrupted by a program fault.
  201. This variable must be recalculated with the Exec function SumKickData() each
  202. time a programmer install a new Resident module.
  203.  
  204. ResAnalyzer allows to reset SysBase->KickChkSum, in this way you deactivate
  205. every module, it's interesting that some modules can be reactivated without
  206. problems after several reset.
  207.  
  208. ResAnalyzer checks that the SumKickData() function is not patched by other
  209. programs, in this case the use of this function becomes unreliable (think of a
  210. virus that changes the SumKickData() code)
  211.  
  212.  
  213. ResModules
  214. ==========
  215. This option shows all the SysBase->ResModules array elements present in the
  216. system.
  217. Each element is a pointer to a Resident structure.
  218.  
  219. struct Resident
  220.        {
  221.         UWORD rt_MatchWord;
  222.         struct Resident *rt_MatchTag;
  223.         APTR  rt_EndSkip;
  224.         UBYTE rt_Flags;
  225.         UBYTE rt_Version;
  226.         UBYTE rt_Type;
  227.         BYTE  rt_Pri;
  228.         char  *rt_Name;
  229.         char  *rt_IdString;
  230.         APTR  rt_Init;
  231.        };
  232.  
  233. ResAnalyzer shows all highly significative structure parameters of the RAM
  234. modules (underlined by a "»»") and the ROM ones.
  235. Normally there are 23 modules in version 1.2, version 1.3 has got a new
  236. module, the private library romboot.
  237. rt_InitCode is a pointer to the routine code start, rt_Pri is used to sort the
  238. array in a high-to-low list, at reset time the highest priority module will be
  239. executed first, and then the lower one, and so on.
  240. The rt_Type describes the kind of module, it can be a library, a device, a
  241. resource, a task, an unknown (an unclassifiable module), etc.
  242. rt_IdString is a message that the programmer has written inside the Resident
  243. module, usually the creation date and the version.
  244. rt_Flags describe the ResModule modality, the flags are four:
  245.  
  246.                   Flag                         K.S. minimum
  247.                   -----------------------------------------
  248.                   RTF_AUTOINIT                 1.2
  249.                   RTF_COLDSTART                1.2
  250.                   RTF_AFTERDOS                 2.0
  251.                   RTF_SINGLETASK               2.0
  252.  
  253. The flags, introduced in KS version 1.2, specify how the module has to be
  254. initialized.
  255. If the module flag is set to RTF_COLDSTART, the system calls the InitCode()
  256. function, this functions calls InitResident().
  257. If the flag RTF_AUTOINIT is not set, InitResident() calls the code pointed by
  258. the rt_Init field, otherwise it's called the MakeLirary() function.
  259. In this case, the location pointed by rt_Init will not contain an executible
  260. code, but some data that MakeLibrary() will use to create a library, a device
  261. or a resource.
  262. The system scans the rt_flags field to understand if it has to call
  263. AddLibray(), AddDevice() or AddResource().
  264. The meaning of the 2.04 flags are unknown at the moment, I only know that
  265. RTF_AFTERDOS indicates a module with a priority lower than -100 and
  266. RTF_SINGLETASK indicates modules with SysBase->thisTask=0.
  267. The ResModule you install will be added in ResModule array only after the
  268. reset.
  269.  
  270. In order to see the next or the previous page, you have to use the cursor
  271. keys.
  272. Pressing the P key, ResAnalyzer will redirect to PRT: the complete ResModules
  273. list, the Captures pointers, KickTagPtr and KickMemPtr pointers.
  274.  
  275.  
  276. Informartion
  277. ============
  278. This option shows some personal greetings and the computer status, such as the
  279. KickStart version, the processor configuration, the vertical blank and power
  280. frequency (NTSC 60Hz, PAL 50Hz) and if the ECS is present.
  281.  
  282. /\/\/\/\/\/\/\/\/\/\/\
  283. .......Compatibility  )
  284. \/\/\/\/\/\/\/\/\/\/\/
  285.  
  286. ResAnalyzer was succesfully tested on:
  287.  
  288. - Amiga  500 normal
  289. - Amiga  500 1Mega Chip
  290. - Amiga 1000 768K
  291. - Amiga 2000 normal
  292. - Amiga 2000 68030+68881
  293. - Amiga 3000 25MHz-100Mb
  294.  
  295. - KickStart: 1.2 - 1.3 - 2.0ß - 2.0
  296. - Processor: 68000 - 68010 - 68030 - [68881 - 68882]
  297.  
  298. /\/\/\/\/\/\/\/\/\/\/\
  299. ......Considerations  )
  300. \/\/\/\/\/\/\/\/\/\/\/
  301.  
  302. Everything I've exposed in this manual and I've coded in ResAnalyzer, has been
  303. learnt after hours of experiments and faults in a few documented Amiga
  304. sub-system.
  305. If you find that this manual or ResAnalyzer presents some error, please
  306. contact me via any media (the best way would be the FidoNode 2:332/405, IDCMP
  307. BBS where I am SysOp), I'd like to create a more complete and useful version.
  308.  
  309. At last I want to thank those people whose suggestions were fundamental in
  310. ResAnalyzer developing:
  311.  
  312. Giorgio Terzi
  313. Nic Wilson
  314. Marco Mariani
  315. GianMario Sartini
  316. Luigi Mongardi
  317. Luigi Callegari
  318. Luca Spada
  319. Michele Masiero
  320. Romano Tenca
  321. Giammarco Giovannelli
  322. Mario Mure'
  323. Barbara, Ylenia & Daniela
  324. The AMY_DEV.ITA FidoNet area
  325.  
  326. I'd like to thank those people too, without whom I would not have become a
  327. FidoNet SysOp.
  328.  
  329. Giuseppe Selvatici
  330. Marco Baldini
  331. Paolo Marchi
  332. Marcello Ardini
  333. Mario Battacchi
  334. Andrea Mennini
  335. Antonio Pasini
  336.  
  337.  
  338. A particular thank to Karl H.  Riesen, the first (and the only person) that
  339. sent me a contribution.
  340. It would not be this new version without his moral support.
  341.  
  342. Thankyou Karl!
  343.  
  344. Final note:
  345. I know, my English is horrible!
  346.